<html><!-- #BeginTemplate "/Templates/spydocs.dwt" -->
<head>
<!-- #BeginEditable "doctitle" --> 
<title>P6Spy Documentation</title>
<!-- #EndEditable -->
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF">
<table width="100%" border="0" bgcolor="black">
<tr>
<td>
<img src="http://www.p6spy.com/documentation/images/header.gif" width="580" height="80"> 
<br> 
<table width="580" border="0">
  <tr> 
    <td width="11%"><a href="http://www.p6spy.com"><img src="http://www.p6spy.com/documentation/images/p6spy_com.gif" width="110" height="20" border="0"></a></td>
    <td width="11%"><a href="http://www.p6spy.com/documentation/index.htm"><img src="http://www.p6spy.com/documentation/images/index.gif" width="110" height="20" border="0"></a></td>
    <td width="11%"><a href="http://www.p6spy.com/documentation/install.htm"><img src="http://www.p6spy.com/documentation/images/install.gif" width="110" height="20" border="0"></a></td>
    <td width="11%"><a href="http://www.p6spy.com/documentation/other.htm#p6log"><img src="http://www.p6spy.com/documentation/images/p6log.gif" width="110" height="20" border="0"></a></td>
    <td width="11%"><a href="http://www.p6spy.com/documentation/other.htm#p6outage"><img src="http://www.p6spy.com/documentation/images/p6outage.gif" width="110" height="20" border="0"></a></td>
    <td width="38%">&nbsp;</td>
  </tr>
</table>
</td>
</tr>
</table>
<br>
<!-- #BeginEditable "body" --> 
<div align="center"> 
  <p><a name="license"></a><font face="Verdana, Arial, Helvetica, sans-serif" size="4"><b>License 
    Agreement, Release Notes, and Additional Help</b></font></p>
  <p>&nbsp;</p>
</div>
<p><font face="Verdana, Arial, Helvetica, sans-serif" size="4"><b><a name="license"></a>License 
  Agreement</b></font><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><br>
  </font></p>
<p><font face="Verdana, Arial, Helvetica, sans-serif" size="2">The P6Spy Software
    License, Version 1.2<br>
</font></p>
<p><font face="Verdana, Arial, Helvetica, sans-serif" size="2">This license is 
  derived and fully compatible with the Apache Software license, see http://www.apache.org/LICENSE.txt.<br>
  <br>
  Copyright (c) 2001-2003 Andy Martin, Ph.D. and Jeff Goke<br>
  All rights reserved. <br>
  <br>
  Redistribution and use in source and binary forms, with or without modification, 
  are permitted provided that the following conditions are met:<br>
  <br>
  1. Redistributions of source code must retain the above copyright notice, this 
  list of conditions and the following disclaimer. <br>
  <br>
  2. Redistributions in binary form must reproduce the above copyright notice, 
  this list of conditions and the following disclaimer in<br>
  the documentation and/or other materials provided with the distribution.<br>
  <br>
  3. The end-user documentation included with the redistribution, if any, must 
  include the following acknowledgment: <br>
  </font></p>
<p><font face="Verdana, Arial, Helvetica, sans-serif" size="2">The original concept 
  and code base for P6Spy was conceived and developed by Andy Martin, Ph.D. who 
  generously contributed the first complete release to the public under this license.<br>
  This product was due to the pioneering work of Andy that began in December of 
  1995 developing applications that could seamlessly be deployed with minimal 
  effort but with dramatic results. This code is maintained and extended by Jeff 
  Goke and with the ideas and contributions of other P6Spy contributors. (http://www.p6spy.com)<br>
  Alternately, this acknowledgment may appear in the software itself, if and wherever 
  such third-party acknowledgments normally appear.<br>
  <br>
  4. The names &quot;P6Spy&quot;, &quot;Jeff Goke&quot;, and &quot;Andy Martin&quot; 
  must not be used to endorse or promote products derived from this software without 
  prior written permission. For written permission, please contact license@p6spy.com.<br>
  <br>
  5. Products derived from this software may not be called &quot;P6Spy&quot; nor 
  may &quot;P6Spy&quot; appear in their names without prior written permission 
  of Jeff Goke and Andy Martin.<br>
  <br>
  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, 
  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE 
  SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
  OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
  OF SUCH DAMAGE.</font></p>
<p><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><b>Trademark Notices</b></font></p>
<p><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Sun, the Sun logo, 
  Sun Microsystems, JavaSoft, JavaBeans, JDK, Java, HotJava, HotJava Views, Visual 
  Java, Solaris, NEO, Joe, Netra, NFS, ONC, ONC+, OpenWindows, PC-NFS, SNM, SunNet 
  Manager, Solaris sunburst design, Solstice, SunCore, SolarNet, SunWeb, Sun Workstation, 
  The Network Is The Computer, ToolTalk, Ultra, Ultracomputing, Ultraserver, Where 
  The Network Is Going, Sun WorkShop, XView, Java WorkShop, the Java Coffee Cup 
  logo, and Visual Java are trademarks or registered trademarks of Sun Microsystems, 
  Inc. in the United States and other countries.<br>
  Windows, WindowsNT, and Win32 are registered trademarks of Microsoft Corp.</font></p>
<p><font face="Verdana, Arial, Helvetica, sans-serif" size="2">JBoss and JBoss 
  Group are trademarks of Marc Fleury under operation by JBoss Group, LLC. <br>
  </font></p>
<p><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Sybase, SQL Anywhere, 
  and Adaptive Server Anywhere are trademarks of Sybase, Inc.<br>
  </font></p>
<p><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Microsoft SQL Server 
  is a trademark of the Microsoft Corporation.</font></p>
<p><font face="Verdana, Arial, Helvetica, sans-serif" size="2">BEA, WebLogic, 
  Tuxedo, and Jolt are registered trademarks, and How Business Becomes E-Business, 
  BEA WebLogic E-Business Platform, BEA Builder, BEA eLink, BEA WebLogic Enterprise, 
  BEA WebLogic Express, BEA WebLogic Integration, BEA WebLogic Personalization 
  Server, BEA WebLogic Portal, and BEA WebLogic Server are trademarks of BEA Systems, 
  Inc. <br>
  Oracle is a registered trademark, and ConText, Oracle Alliance and Oracle8 are 
  trademarks or registered trademarks of Oracle Corporation. </font></p>
<p><font face="Verdana, Arial, Helvetica, sans-serif" size="2">DB2, DB2 OLAP Server, 
  WebSphere, and IBM are trademarks or registered trademarks of International 
  Business Machines Corporation in the United States, other countries or both.</font></p>
<p><font face="Verdana, Arial, Helvetica, sans-serif" size="2">MySQL is a trademark 
  of MySQL AB in the United States and other countries.</font> </p>
<p><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Other product names 
  mentioned herein and throughout the this web site are the trademarks of their 
  respective owners.</font><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><br>
  </font> </p>
<ul>
</ul>
<p><a name="release"></a><font face="Verdana, Arial, Helvetica, sans-serif" size="4"><b>Release 
  Notes </b></font></p>
<blockquote>
   <p><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><b><font size="2">Version 
    1.2</font></b></font></p>
  <ul>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Driver initialization bug fix and package import cleanup contributed
        by Joe
        Fisher (Joe Fisher)</font></li>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Further changes
        to better support JDK 1.2 </font></li>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Changed a
          DataSource class name to avoid conflict with an Oracle class of the same
          name (Alan Arvesen of IronGrid)</font></li>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Allow unlimited
        SQL parameters (Bradley Johnson of IronGrid)</font></li>
  </ul> 
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><b><font size="2">Version 
    1.1</font></b></font></p>
  <ul>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Added a highly 
      requested feature contributed by Jeff Wolfe that only logs queries taking 
      longer than a specified threshold. (Jeff Wolfe)</font></li>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Added a bug 
      fix that prevented modified property files from being persisted in Java 
      environments prior to 1.4. (Jeff Wolfe)</font></li>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Added JBoss 
      2.x JMX support, submitted by Ralph Harnden (Ralph Harnden)</font></li>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Alan Arvesen 
      of IronGrid added a driver patch that deregisters realdrivers using the 
      same name as the P6 driver to avoid driver order registration problems (Alan 
      Arvesen) </font></li>
  </ul>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><b><font size="2">Version 
    1.0.1</font></b></font></p>
  <ul>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Added a bug 
      fix to prevent a NullPointerException from being thrown when there is a 
      space before or after the name of the realdriver. (Paolo De Carlo)</font></li>
  </ul>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><b><font size="2">Version 
    1.0 Production Release</font></b></font></p>
  <ul>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">In beta for 
      over 6 months, P6Spy version 1.0 is a major rewrite of the P6Spy code. This 
      release includes numerous new features, such as support for JDK 1.4, Datasources, 
      log4j, JBoss 3.x, and WebSphere, as well as an overhauled, optimized architecture.</font></li>
  </ul>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Version 1.0 
    beta 9</b></font></p>
  <ul>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Added full 
      support for DataSources and created installation instructions for WebSphere 
      4.0. (Dennis Parker, </font><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="http://www.irongrid.com">IronGrid</a></font><font face="Verdana, Arial, Helvetica, sans-serif" size="2">)</font></li>
  </ul>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Version 1.0 
    beta 8</b></font></p>
  <ul>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#000000">Refactored 
      options to support easier creation of new option files and clearer separation 
      of file management from management of the actual properties.</font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#000000">Reduced 
      deployment JAR file size by 25%.</font></li>
    <li><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"> 
      <a href="index.htm">P6Spy Documentation</a> was overhauled. (<font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">Suzanne 
      Patton</font>)</font></li>
  </ul>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b></b></font><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Version 
    1.0 beta 7</b></font></p>
  <ul>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#000000">Created 
      code to enable more robust property file loading, including the ability 
      to use the ClassLoader to load the property file. (Scott Howlett)</font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Fixed a problem 
      dealing with the log file being ignored.</font></li>
  </ul>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Version 1.0 
    beta 6</b></font></p>
  <ul>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#000000">Debugged 
      and fixed a problem in which applications calling newInstance(), instead 
      of using DriverManager, were causing the driver to load improperly.</font></li>
  </ul>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Version 1.0 
    beta 5</b></font></p>
  <ul>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> Refactored 
      the driver loading to first attempt the new classloader mechanism (implemented 
      in Version 1 beta 2) and, upon failure, attempt the previously-used Name 
      loading call. (Alan Arvesen, </font><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="http://www.irongrid.com">IronGrid</a></font><font size="2" face="Verdana, Arial, Helvetica, sans-serif">)</font></li>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">P6SpyDriver 
      now throws an exception immediately when realdriver fails to load, making 
      diagnostics easier.</font></li>
  </ul>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Version 1.0 
    beta 4</b></font></p>
  <ul>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Added error 
      category and pushed error logging through the standard logging process instead 
      of stderr. This should make it easier to diagnose problems when installation 
      does not proceed as expected.</font></li>
  </ul>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Version 1.0 
    beta 3</b></font></p>
  <ul>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Added a call 
      to each P6 class called getJDBC() that returns the native driver. This enables 
      a workaround for using non-standard JDBC calls included with some JDBC drivers. 
      See <a href="license.htm#issues">Known Issues</a> for more information. 
      Thanks to Ralph Harnden for the suggestion. (Alan Arvesen, </font><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="http://www.irongrid.com">IronGrid</a></font><font size="2" face="Verdana, Arial, Helvetica, sans-serif">) 
      </font></li>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Added an appender 
      architecture which supports customizable logging. (Alan Arvesen, </font><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="http://www.irongrid.com">IronGrid</a></font><font size="2" face="Verdana, Arial, Helvetica, sans-serif">)</font></li>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Changed the 
      reloading code to work as a separate thread, making it more efficient. (Alan 
      Arvesen, </font><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="http://www.irongrid.com">IronGrid</a></font><font size="2" face="Verdana, Arial, Helvetica, sans-serif">)</font></li>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> Enhanced 
      module support, making it easier to create a new module. Now, the only required 
      files for a new module are the factory, the driver, and the classes that 
      are changing. If you want to intercept the Statement class only, that is 
      the only class you need to create. In the past, you had to create an instance 
      of every class, even if you did not want to override that class. The code 
      to support driver loading has also been simplified. </font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2"> Added JDK 
      1.4 support. (Matthew Wakeling)</font></li>
  </ul>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Version 1.0 
    beta 1 &amp; 2</b></font></p>
  <ul>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2"> Added log4j 
      support, which is one of the most requested feature enhancements. <font face="Verdana, Arial, Helvetica, sans-serif" size="2">(Rafael 
      Alvarez</font>) </font></li>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Due to problems 
      reported with driver loading in the alpha version, driver loading has been 
      rewritten. It is now more efficient.</font></li>
  </ul>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Version 1.0 
    alpha </b></font></p>
  <ul>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Restructured 
      code to inherit from a single core wrapper driver.</font></li>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Introduced 
      concepts of modules and stackable drivers that dynamically load the necessary 
      code into memory at runtime.</font></li>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Broke code 
      into logical modules: <a href="other.htm#p6log">P6Log</a> and <a href="other.htm#p6outage">P6Outage</a>.</font></li>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Refactored 
      large amount of code.</font></li>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Rewrote JUnit 
      tests and added more rigorous tests.</font></li>
  </ul>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Version 0.8</b></font></p>
  <ul>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Created an 
      Outage Detection module that reports database outages when database statements 
      do not respond within a given period of time. (Peter Laird)</font></li>
    <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Created a 
      JSP application that gives a visual control to P6Spy. The first version 
      can be used to view configuration information about P6Spy and to create 
      a demarcation in the log file. (Peter Laird) </font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2"> Added support 
      for multiple simultaneous databases, a highly requested feature. Currently, 
      support is limited to three databases, but can easily be expanded. (Viktor 
      Szathmary)</font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2"> Added the 
      logging of a connection ID, and enabled URLs to be prefixed with <b>p6spy:</b> 
      to aid in debugging. A common mistake people make when installing is to 
      have the real driver registered elsewhere; this feature avoids that problem. 
      The default does not require this value, but in the future it may be mandatory 
      to ease the install process.</font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Rewrote P6SpyOptions 
      to allow new options to be added quickly and easily.</font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Additional 
      JUnit tests added.</font></li>
  </ul>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Version 0.72</b></font></p>
  <ul>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2"> Added the 
      ability to dynamically reload the property file after a specified period 
      of time. (Philip Ogren)</font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Added logging 
      to commit and rollback statements.</font></li>
  </ul>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Version 0.71</b></font></p>
  <ul>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2"> Added installation 
      instructions for BEA WebLogic <a href="install.htm#wlportal">Portal</a> 
      and <a href="install.htm#wlserver">Server</a>. (Philip Ogren)</font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Added Jakarta 
      RegExp support. (Philip Ogren)</font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Ability to 
      print stack trace of logged statements. This is useful in understanding 
      where a logged query is being executed in the application. (Philip Ogren)</font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Simplified 
      table monitoring property file option. (Philip Ogren)</font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Updated the 
      RegExp documentation.</font></li>
  </ul>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Version 0.7</b></font></p>
  <ul>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2"> Added timing 
      information to the log files, in order to better visualize bottleneck queries. 
      (Simon Sadedin)</font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Added RegExp 
      support for table filtering, allowing sophisticated custom filtering. (Simon 
      Sadedin) </font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Added installation 
      instructions for <a href="install.htm#iplanet">Sun iPlanet</a>. (Michael 
      Sgroi)</font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="-1">Added installation 
      instructions for <a href="install.htm#weblogic">BEA WebLogic</a>. (Richard 
      Delbert)</font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Added support 
      for callable statements.</font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Added support 
      for batch statements.</font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Added a debug 
      category that provides detailed debug information. By default, this is disabled. 
      Refer to the <a href="license.htm#troubleshooting">Troubleshooting</a> section 
      for more information.</font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Changed the 
      default log format to include more information.</font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Added a test 
      target to Ant that works with JUnit to perform some basic tests, using Oracle 
      as the test database.</font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Added ResultSet 
      logging and timing information. By default, this is disabled. Refer to the 
      <a href="other.htm#log"> Log File Format</a> documentation for more information.</font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Fixed a number 
      of bugs, in particular a bug that was causing an empty <b>spy.log</b> file 
      to be created and never populated.</font></li>
  </ul>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Version 0.6</b></font></p>
  <ul>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Fixed a bug 
      in which null connections were not returning null, but rather empty connections. 
      This was a problem for some applications that were expecting a null connection.</font></li>
    <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Added an option 
      to allow the truncation/non-truncation of the log file, which can be specified 
      within <b>spy.options</b>. </font></li>
  </ul>
</blockquote>
<ul>
  <ul>
    <blockquote> 
      <blockquote> 
        <ul>
        </ul>
      </blockquote>
    </blockquote>
  </ul>
</ul>
<p><a name="issues"></a><font face="Verdana, Arial, Helvetica, sans-serif" size="4"><b>Known 
  Issues </b></font></p>
<ul>
  <li> 
    <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Non-standard 
      (driver specific) JDBC methods are not supported without using a workaround.&nbsp;&nbsp;</b>Many 
      drivers provide methods that expose driver-specific, non-standard functionality. 
      Most developers do not use these features, but in the event that an application 
      does use these features they are not natively supported by P6Spy. For example, 
      the MySQL JDBC drivers allow you to call the auto-increment function as 
      follows: </font></font></div>
    <div align="left"><br>
    </div>
    <blockquote> 
      <blockquote> 
        <div align="left"> 
          <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><font face="Courier New, Courier, mono" size="2">((org.gjt.mm.mysql.PreparedStatement)stmt).getLastInsertId(); 
            </font></font></p>
        </div>
      </blockquote>
    </blockquote>
  </li>
  <blockquote> 
    <div align="left"></div>
  </blockquote>
</ul>
<blockquote> 
  <div align="left"> 
    <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">That 
      cast fails when P6SpyDriver is in place, since the class it tries to cast 
      is against P6SpyDriver itself. P6SpyDriver does not expose that driver-specific 
      method and the P6Spy PreparedStatement class is not a subclass of <b>org.gjt.mm.mysql.PreparedStatement</b>. 
      The one workaround available requires code changes in the application. Each 
      P6Spy class exposes a method called getJDBC() that returns the real JDBC 
      driver. With this method, an application can cast a class, such as PreparedStatement, 
      to P6PreparedStatement, invoke getJDBC(), and then cast the returned value 
      to the native driver class, as in OraclePreparedStatement. In this example, 
      the non-JDBC statement is not logged but the application will continue to 
      function. </font></font></p>
    <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Ideally, a 
      long-term, native solution<font face="Verdana, Arial, Helvetica, sans-serif" size="2"> 
      will be provided. One idea under consideration is to provide vendor-specific 
      versions (Oracle or MySQL, for example) of P6Spy that subclass the vendor 
      driver, so a cast can be successfully executed. These versions would expose 
      the vendor-specific methods. However, this is not yet under development, 
      and other suggestions are welcome</font></font></p>
  </div>
  <ul>
  </ul>
</blockquote>
<p><a name="troubleshooting"></a><font face="Verdana, Arial, Helvetica, sans-serif" size="4"><b>Troubleshooting</b></font></p>
<ul>
  <li> 
    <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Application 
      server does not start properly.&nbsp;</b>This is probably because the <b>p6spy.jar</b> 
      or <b>spy.properties</b> is not in the classpath.&nbsp;If using JBoss, look 
      at the JBoss log file for clues</font>. A message like the following usually 
      means the <b>p6spy.jar</b> file is not found.</font></div>
    <blockquote> 
      <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><font size="2" face="Courier New, Courier, mono">[JDBC 
        provider] Initializing<br>
        [Service Control] Could not initialize DefaultDomain:service=JdbcProvider</font></font></div>
    </blockquote>
  </li>
</ul>
<blockquote> 
  <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Y<font face="Verdana, Arial, Helvetica, sans-serif" size="2">ou 
    may see that the driver is loaded, but a message will indicate that the <b>spy.properties</b> 
    file is not found, and will list all of the directories searched for that 
    file. In this case, move the <b>spy.properties</b> file to one of the searched 
    directories listed.</font></font></div>
</blockquote>
<ul>
  <li> 
    <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>The 
      spy.properties cannot be found.&nbsp;&nbsp;</b>Often application servers 
      have their own classpath and ignore the standard Java classpath. Make sure 
      <b>spy.properties</b> is in the classpath that is listed in the error message 
      stating <b>spy.properties</b> cannot be found, this is the classpath that 
      P6Spy is searching.</font></font></div>
  </li>
</ul>
<blockquote> 
  <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"> 
    </font></font></div>
</blockquote>
<ul>
  <li> 
    <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>The 
      spy.log file is not written.&nbsp;</b>Searching your entire drive for <b>spy.log</b>. 
      Remember, you can specify the default location using the <b>spy.properties</b> 
      property file. See <a href="other.htm">Common Property File Settings</a> 
      for more information. </font></font></div>
  </li>
</ul>
<blockquote> 
  <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"> 
    </font></div>
</blockquote>
<ul>
  <li> 
    <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>The 
      spy.log file is generated, but nothing is logged. </b>P6Spy has the ability 
      to print debug statements that are very useful in determining why the driver 
      is not working. To turn on these statements, remove the debug category and 
      the info category from the excludecategories list in your <b>spy.options</b> 
      file. Also, make sure your wrapped driver is registered correctly. Set <b>useprefix=true</b> 
      in your <b>spy.properties</b> file and put<b> p6spy:</b> as a prefix for 
      your connection URL for the P6Spy driver in your application server configuration. 
      P6Spy will fail if the prefix is not present.<br>
      </font></font></div>
  </li>
  <li><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>The 
    spy.log file is generated, but nothing is logged. </b></font>The DriverManager 
    class sequentially tries every driver that is registered to find the right 
    driver. In some instances, it's possible to load up the realdriver before 
    the p6spy driver, in which case your connections will not get wrapped as the 
    realdriver will &quot;steal&quot; the connection before p6spy sees it. Set 
    the deregisterdrivers property to &quot;true&quot; to cause p6spy to explicitily 
    deregister the realdrivers</font></li>
</ul>
<blockquote> 
  <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"> 
    </font></div>
</blockquote>
<ul>
  <li> 
    <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">P6Spy 
      was invoked illegally. </font></b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">You 
      probably specified an illegal P6Spy driver in your application configuration.<b> 
      </b> You most likely got this message because you did not specify com.p6spy.engine.spy.SpyDriver 
      as the driver to register in your application configuration. Specifying 
      another class that extends P6SpyDriver is an illegal action.</font></font> 
      <p>&nbsp;</p>
      <blockquote> 
        <ul>
          <blockquote> 
            <div align="left"></div>
          </blockquote>
          <div align="left"> 
            <ul>
            </ul>
          </div>
        </ul>
      </blockquote>
      <div align="left"><a name="faq"></a><font face="Verdana, Arial, Helvetica, sans-serif" size="4"><b>FAQ</b></font></div>
      <ul>
        <li> 
          <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Can 
            I use log4j?&nbsp;&nbsp;</b>Yes. See the <a href="other.htm#log">Log 
            File Format</a> documentation for more information.</font></div>
        </li>
        <li> 
          <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Can 
            I use regular expressions to determine what is logged?&nbsp;&nbsp;</b>Yes. 
            See the <a href="other.htm#common">Common Property File Settings</a> 
            documentation and refer to the stringmatcher section.</font></div>
        </li>
        <li> 
          <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Once 
            the application is running, can I change the properties and enable 
            the system to use the new properties?&nbsp;&nbsp;</b>Yes. See the 
            <a href="other.htm#common">Common Property File Settings</a> documentation 
            and refer to the reloadproperties section.</font></div>
        </li>
        <li> 
          <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Can 
            I use multiple database drivers?&nbsp;&nbsp;</b>Yes. See the <a href="other.htm#common">Common 
            Property File Settings</a> documentation for more information. Refer 
            specifically to sections regarding realdriver2 and realdriver3.</font></div>
        </li>
      </ul>
      <blockquote> 
        <ul>
          <div align="left"> 
            <ul>
              <ul>
                <blockquote> 
                  <blockquote>&nbsp;</blockquote>
                </blockquote>
              </ul>
            </ul>
          </div>
        </ul>
      </blockquote>
    </div>
  </li>
</ul>
<!-- #EndEditable --> <br>
<table width="100%" border="0" bgcolor="black">
<tr>
<td>
<table width="580" border="0">
  <tr> 
    <td width="11%"><a href="http://www.p6spy.com"><img src="http://www.p6spy.com/documentation/images/p6spy_com.gif" width="110" height="20" border="0"></a></td>
    <td width="11%"><a href="http://www.p6spy.com/documentation/index.htm"><img src="http://www.p6spy.com/documentation/images/index.gif" width="110" height="20" border="0"></a></td>
    <td width="11%"><a href="http://www.p6spy.com/documentation/install.htm"><img src="http://www.p6spy.com/documentation/images/install.gif" width="110" height="20" border="0"></a></td>
    <td width="11%"><a href="http://www.p6spy.com/documentation/p6spymodules.htm#p6log"><img src="http://www.p6spy.com/documentation/images/p6log.gif" width="110" height="20" border="0"></a></td>
    <td width="11%"><a href="http://www.p6spy.com/documentation/p6spymodules.htm#p6outage"><img src="http://www.p6spy.com/documentation/images/p6outage.gif" width="110" height="20" border="0"></a></td>
    <td width="38%">&nbsp;</td>
  </tr>
</table>
</td>
</tr>
</table>
</body>
<!-- #EndTemplate --></html>
